<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 2 1-n之间的奇数求和  n为参数，返回值
        // 思路： 求和最终得到一个结果(数字)sum  累计求和     1 + 3 + 5 + 7 + 9
        function sumJi(n) {
            var sum = 0 ;
            for(var i = 1 ; i <= n ; i += 2) {
                sum += i ;
            }
            return sum
        }

        alert(sumJi(5)) ;



        // 3 1-n之间的阶乘求和  1!+2!+3!  n为参数，返回值   3! = 1 * 2 * 3  


        // 求n的阶乘
        // function jc(n) {
        //     var res = 1 ;  // 初始值在求和的时候是0  ， 在求乘积的时候初始值是1
        //     for(var i = 1 ; i <= n ; i++) {
        //         res *= i ;
        //     }
        //     return res ;
        // }
        // alert(jc(4)) ;  // 24


        function sumJC(n) {
            var sum = 0 ;   // 求和的结果
            var res = 1 ;   // 阶乘的结果
            for(var i = 1 ; i <= n ; i++) {
                res *= i ;  // 计算的是阶乘
                sum += res ;
            }
            return sum ;
        }

        alert(sumJC(4)) ;    // 1 + 2 + 6 + 24  // 33


        // 4 产生一个随机数，判断是不是质数 ！！！！ 多个函数的使用！


        // isZhi(rand(0,100)) ;  // 函数调用函数


        // 7 编写一个函数  传入参数n  有返回值
            // 1.当传入n为偶数时，调用函数求1/2 + 1/4 + ... + 1/n
            // 2.当传入n为奇数时，调用函数求1 + 1/3 + ... + 1/n

        function total(n) {
            // var sum = 0 ; 
            // if(n % 2 === 0) {
            //     for(var i = 2 ; i <= n ; i += 2) {
            //         sum += 1 / i ;
            //     }
            // } else {
            //     for(var i = 1 ; i <= n ; i += 2) {
            //         sum += 1 / i ;
            //     }
            // }
            // return sum ;

            // 当n为偶数时  i的初始值是2 ，n 为奇数时，i的初始值是1
            // var sum = 0 ;
            // var f = 1 ;
            // if(n % 2 === 0) {
            //     f = 2 ;
            // }
            // var f = n % 2 ? 1 : 2 ;
            // for(var i = f ; i <= n ; i += 2) {
            //     sum += 1 / i ;
            // }
            var sum = 0 ;
            for(var i = n % 2 ? 1 : 2 ; i <= n ; i += 2) {
                sum += 1 / i ;
            }
            return sum 
        }


        alert(total(4)) ;


        // 8 某个公司采用公用电话传递数据，数据是四位的整数，在传递过程中是加密的，加密规则如下：每位数字都加上5,然后用除以10的余数代替该数字，再将第一位和第四位交换，第二位和第三位交换，请编写一个函数，传入原文，输出密文   原文为参数，返回值密文

        function secret(n) {
            // 取出每一位
            var qian = parseInt(n / 1000) ;
            var bai = parseInt(n % 1000 / 100) ;
            var shi = parseInt(n % 100 / 10) ;
            var ge = n % 10 ;
            qian = (qian + 5) % 10 ;
            bai = (bai + 5) % 10 ;
            shi = (shi + 5) % 10 ;
            ge = (ge + 5) % 10 ;
            // return 1000 * ge + 100 * shi + 10 * bai + qian
            return '' + ge + shi + bai + qian 
        }

        alert(secret(5555))


        alert(0000);   // 0







        // 9 产生n个数字验证码  比如4位的：1 4 5 2  或者5位的：  2 1 4 3 3    参数n , 返回值是验证码

        function rand(min , max) {
            return parseInt(Math.random() * (max - min)) + min ;
        }

        function code(n) {
            // var n1 = rand(0 , 10) ;
            // var n2 = rand(0 , 10) ;
            // var n3 = rand(0 , 10) ;
            // var n4 = rand(0 , 10) ;
            // return '' + n1 + n2 + n3 + n4 

            var res = '' ;  // 结果是一个字符串
            for(var i = 0 ; i < n ; i++) {
                res += rand(0 , 10) ;
            }
            return res ;
        }

        alert(code(5)) ;




    </script>
    
</body>
</html>